const Service = require('egg').Service;

class MySQLService extends Service {


    *insert(table, params) {
        console.log("插入", params)
        yield this.app.mysql.insert(table, params);//ok   
        return yield this.app.mysql.get(table, params);
    }

    async query(table,params) {//query 不传参,默认获取到第一条
        console.log("查询 ")
        return await this.app.mysql.get(table, params||{});
        // return await this.app.mysql.get('user', { username: params });
    }

    async select(table,params) {
        console.log("查询表 所有数据 ")
        return await this.app.mysql.select(table, params||{});
        // return await this.app.mysql.get('user', { username: params });
    }


    *delete(table,id) {
        yield this.app.mysql.delete(table,{ id: id } );//
        const result=yield this.app.mysql.get(table, { id: id });
        // console.log("删除",result) 
        if(!result){
            return true;
        }  else   return null
    }

    async update(table, params) {        
        const result = await this.app.mysql.update(table, params);//ok  
        if (result.affectedRows === 1) {
            return true;
        } else{
            return null;
        }
    }

    *searcch(table,params,condition,columns,page,limit) {
        return yield this.app.mysql.select(table,
            { // 搜索 test 表
                where:condition,// { col: params, }, // WHERE 条件
                columns: [ 'id', columns], // 要查询的表字段,即要返回显示的字段
                orders: [['id', 'desc']], // 排序方式:asc 按升序,desc 按降序
                limit: limit||10, // 返回数据量
                offset: page||0, // 数据偏移量 用于翻页
            });  //ok 
    }

    *newTable(){//新表
        //create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 
//添加主键： Alter table tabname add primary key(col) 
// 说明：删除主键： Alter table tabname drop primary key(col) 
     }

    *newColum(){//新字段
//Alter table tabname add column col type 
//注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。 
    }
    // 创建索引：create [unique] index idxname on tabname(col….) 
    // 删除索引：drop index idxname 
    // 注：索引是不可更改的，想更改必须删除重新建。 

}

module.exports = MySQLService;